import multer from "@koa/multer";

import path from "path";

// 重命名文件名
function rename(req, file, cb) {
    // 获取后缀
    const ext = path.extname(file.originalname);
    // 获取文件名
    const firstName = path.basename(file.originalname, ext);
    // 添加时间戳，防止重名
    cb(null, firstName + '-' + Date.now() + ext)
}

/**
 * @description 自定义上传路径
 * @param {string} pathStr 
 * @returns storage
 */
function customPath(pathStr) {
    return multer.diskStorage({
        destination: function (req, file, cb) {
            cb(null, path.join(__dirname, pathStr))
        },
        filename: rename
    })
}

// 默认上传路径 可上传任意文件
const storage = customPath('../static')

// 上传音频文件
const uploadAudio = multer({
    dest: path.join(__dirname, '../static/music'),
    fileFilter: (req, file, cb) => {
        // console.log('fileFilter:', file);
        // 音频文件类型
        let reg = /^audio\/.*$/;
        if (reg.test(file.mimetype)) {
            // 返回 true 表示接受该文件
            cb(null, true);
        } else {
            // 返回 false 表示不接受该文件 并将错误信息返回
            cb(new Error('只接受音频文件'), false);
            // cb(null, false);
        }
    },
    storage: customPath('../static/music'),
    limits: {
        fileSize: 20 * 1024 * 1024, // 20MB
        fields: 10,
    }
})

export {
    uploadAudio,
    storage
}